package com.ly.algorithm.leetcode.array;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @Classname Problem78
 * @Description
 *
 * 给定一组不含重复元素的整数数组 nums，返回该数组所有可能的子集（幂集）。
 *
 * 说明：解集不能包含重复的子集。
 *
 * 示例:
 *
 * 输入: nums = [1,2,3]
 * 输出:
 * [
 *    [3],
 *   [1],
 *   [2],
 *   [1,2,3],
 *   [1,3],
 *   [2,3],
 *   [1,2],
 *   []
 * ]
 *
 *
 * @Date 2020/12/9 10:49
 * @Author 冷心影翼
 */
public class Problem78 {

	public static void main(String[] args) {
		Solution78 solution78 = new Solution78();
		List<List<Integer>> subsets = solution78.subsets(new int[]{1, 2, 3});

		subsets.forEach(System.out::println);
	}

}

class Solution78 {
	public List<List<Integer>> subsets(int[] nums) {
		List<List<Integer>> lists = new ArrayList<>();
		lists.add(new ArrayList<>());
		for(int i=0;i<nums.length;i++) {
			int lenth = lists.size();
			for (int j=0;j<lenth;j++) {
				List<Integer> list = new ArrayList<>(lists.get(j));
				list.add(nums[i]);
				lists.add(list);
			}
		}
		return lists;
	}
}